****TESTS FREE-RIDING USING THE SHARE OF A SUBJECT-GRADE THAT A TEACHER TEACHES AS THE MEASURE OF HOW MUCH OF AN AWARD THEY'RE RESPONSIBLE FOR***

  *OPEN STUDENT LEVEL FILE*
clear all
set mem 2g
set more off



cap log close
log using teacher_share_llr.log, replace
set seed 7563543


cd "C:\Users\imberman\Dropbox\ASPIRE\teacher free riding\"
use "C:\Users\imberman\Dropbox\ASPIRE\teacher free riding\hisd_data_freeriding_b.dta", clear

sort campus year grade

**IDENTIFY THE MAXIMUM AWARD FOR A TEACHER
gen maxaward = 0
replace maxaward = 5000 if year == 2006 | year == 2007
replace maxaward = 7000 if year == 2008 | year == 2009

gen post = year >= 2006
drop if id == .
xtset id year

drop unit
gen unit = 1
egen enroll = sum(unit), by(campus year)
gen enroll2 = enroll^2
gen enroll3 = enroll^3
gen enroll4 = enroll^4

***NOTE THAT 9TH GRADE SCIENCE AND SOC ARE STANFORD RATHER THAN TAKS IN ASPIRE****
***FOR INITIAL ANALYSIS DO ONLY MATH & READING FOR ALL GRADES (TAKS) AND LANGUAGE FOR ALL GRADES (STANF)
** SCIENCE & SOC FOR 10 & 11.FOR ACROSS DEPARTMENT ANALYSIS, LIMIT TO GRADES 10 & 11****


*ACHIEVEMENT LAGS
foreach subject in "math" "read" {
  gen ltaks_sd_scale_min_`subject' = l.taks_sd_scale_min_`subject'
 }
foreach subject in "math" "read" "lang" "socialstu" "science" {
  gen lstanford_sd_`subject'_scale = l.stanford_sd_`subject'_scale
 }

*NO SCIENCE & SOC IN 10TH GRADE SO USE 8TH GRADE LAG
foreach subject in "sci" "soc" {
  gen ltaks_sd_scale_min_`subject' = 0 if grade == 10 | grade == 11
  replace ltaks_sd_scale_min_`subject' = l.taks_sd_scale_min_`subject' if grade == 11
  gen l2taks_sd_scale_min_`subject' = 0 if grade == 10 | grade == 11
  replace l2taks_sd_scale_min_`subject' = l2.taks_sd_scale_min_`subject' if grade == 10
 }
 
 *GENERATE PRE-LAGS FROM 2004 - for 2004 and earlier use once lagged score
 foreach subject in "math" "read" {
 	gen taks_`subject'_2004 = l.taks_sd_scale_min_`subject'
	replace taks_`subject'_2004 = l3.taks_sd_scale_min_`subject' if year == 2007
	replace taks_`subject'_2004 = l4.taks_sd_scale_min_`subject' if year == 2008
	replace taks_`subject'_2004 = l5.taks_sd_scale_min_`subject' if year == 2009
}

 foreach subject in "math" "read" "lang" "science" "socialstu" {
 	gen stanf_`subject'_2004 = l.stanford_sd_`subject'_scale
	replace stanf_`subject'_2004 = l3.stanford_sd_`subject'_scale if year == 2007
	replace stanf_`subject'_2004 = l4.stanford_sd_`subject'_scale if year == 2008
	replace stanf_`subject'_2004 = l5.stanford_sd_`subject'_scale if year == 2009
}





*LIMIT TO 2003 AND LATER
keep if year >= 2003

*LIMIT TO GRADES 9 - 11
keep if grade >= 9 & grade <= 11
keep id campus year *taks_sd_scale_min* *stanford_sd_*_scale grade year ethnicity econdis atrisk speced lep gifted enroll* female  taks_*_2004 stanf_*_2004
compress

*MERGE IN STUDENT-TEACHER LINKS
sort id campus year
merge 1:m id campus year using "C:\D\Research\Charter\Houston\HISDdata\DataFiles\SecondGrades\secondary_classes.dta", keepusing(tch_number course_type course crs_title)
drop if _merge == 2

*ALLOW FOR DIFFERENT LAG VALUES BY GRADE & YEAR
foreach year of numlist 2003 2004 2007 2008 2009 {
 foreach grade of numlist 9/11 {
  foreach exam of varlist stanf_*_2004 taks_*_2004 {
    gen `exam'_y`year'_g`grade' = `exam'*(year == `year')*(grade == `grade')
  }
 }
}

*MERGE IN ASPIRE COURSE LISTS --> WORKS WELL FOR 2006-07 & LATER BUT POORLY FOR BEFORE SO WILL NEED TO USE OLD METHOD FOR PRE-PERIOD
drop _merge
sort course
merge course using "C:\Users\imberman\Dropbox\ASPIRE\teacher free riding\aspire_course_list_2009.dta", keep(subject)
replace subject = "" if year <= 2005
replace course_type = "" if year >= 2006
replace course_type = "eng" if subject == "Language Arts" & year >= 2006
replace course_type = "read" if subject == "Reading" & year >= 2006
replace course_type = "math" if subject == "Math" & year >= 2006
replace course_type = "sci" if subject == "Science" & year >= 2006
replace course_type = "soc" if subject == "Social Studies" & year >= 2006
drop if course_type == ""

gen course_type_a = course_type
replace course_type_a = "eng/read" if course_type == "eng"
replace course_type_a = "eng/read" if course_type == "read"

*MERGE IN TEACHER PREPS AND INDICATOR FOR BEING AN ASPIRE COURSE - LIMIT TO ASPIRE COURSES
sort tch_number campus year  crs_title
cap drop _merge
merge tch_number campus year  crs_title using "C:\Users\imberman\Dropbox\ASPIRE\teacher free riding\teacher_preps.dta", keep(aspire_course teacher_preps)
tab aspire_course, missing
keep if aspire_course == 1




***MERGE IN TEACHER PERCENTAGE DATA
sort campus year grade course_type_a tch_number
drop _merge
merge campus year grade course_type_a tch_number using "C:\Users\imberman\Dropbox\ASPIRE\teacher free riding\grade_percentages.dta"
drop if _merge == 2


*DROP TEACHERS WITH FEWER THAN 10 STUDENTS
drop if students < 10

*MERGE IN DEPARTMENT SIZE
drop _merge
sort campus year grade
merge campus year grade using "C:\Users\imberman\Dropbox\ASPIRE\teacher free riding\grade_departments.dta"
drop if _merge == 2

/*
***OPTION TO MERGE IN SCHOOL LEVEL PERCENTAGES AND DEPT SIZES FOR 2006-07
sort campus year course_type tch_number
drop _merge
replace share_students = . if year == 2006
merge m:1 campus year course_type tch_number using "C:\Users\imberman\Dropbox\ASPIRE\teacher free riding\school_percentages.dta", update keepusing(share_students)
drop if _merge == 2

sort campus year
drop _merge
merge campus year using "C:\Users\imberman\Dropbox\ASPIRE\teacher free riding\school_departments.dta"
drop if _merge == 2
foreach subject in "eng" "math" "read" "sci" "soc" {
   replace teachers_grade_`subject' = teachers_school_`subject' if year == 2006
}
*/

*MERGE IN TEACHER ID LINKED OVER TIME DERIVED FROM NAMES (CONDITIONAL ON BEING IN HISD IN 2006-07 OR LATER)
*NOTE THAT ONLY A SUBSET OF TEACHERS CAN BE LINKED BACK BEFORE 2006-07
destring tch_number, replace
sort tch_number year
drop _merge
merge m:m tch_number year using teacher_linked_ids
drop if _merge == 2


*HISD HAD AN EXPERIMENTAL PROGRAM IN 2005-06 THAT WAS BASED ON INDIVIDUAL REWARDS, HENCE WE'LL DROP THIS YEAR
drop if year == 2005

*2006 IS BASED ON CAMPUS-WIDE DEPARTMENTAL AWARDS RATHER THAN GRADE LEVEL, SO DROP THIS YEAR TOO
drop if year == 2006

***ASSIGN WEIGHTS SO THAT EACH STUDENT HAS A VALUE OF 1 IN EACH SUBJECT
duplicates tag id year campus course_type, gen(classes_in_subject)
replace classes_in_subject = classes_in_subject + 1
gen weight = 1/classes_in_subject
drop if id == .


**GENERATE POST INDICATORS
gen post = year >= 2006
gen post_share_students = post*share_students
foreach var of varlist teachers_grade_* {
	gen post_`var' = post*`var'
}
gen school_year = campus*10000 + year

*GENERATE VARIABLES THAT POOL TAKS(10TH/11TH) AND STANFORD(9TH) FOR SCI AND SOC
	gen stanf_taks_soc = stanford_sd_socialstu_scale if grade == 9
	replace stanf_taks_soc = taks_sd_scale_min_soc if grade >= 10
	gen lstanford_sd_socialstu_scale_9 = lstanford_sd_socialstu_scale*(grade == 9)
	gen lstanford_sd_socialstu_scale_10 = lstanford_sd_socialstu_scale*(grade >= 10)


	gen stanf_taks_sci = stanford_sd_science_scale if grade == 9
	replace stanf_taks_sci = taks_sd_scale_min_sci if grade >= 10
	gen lstanford_sd_science_scale_9 = lstanford_sd_science_scale*(grade == 9)
	gen lstanford_sd_science_scale_10 = lstanford_sd_science_scale*(grade >= 10)



*LIMIT TO GRADES 9 - 11
keep if grade >= 9 & grade <= 11


	xi i.grade*i.year, prefix(_g)
	xi i.female i.ethnicity i.econdis i.atrisk i.speced i.lep i.gifted 
	
*DROP TEACHERS WHO HAVE MORE THAN 90% SPECIAL EDUCATION or LEPSTUDENTS
	egen spec_ed_share = mean(speced), by(tch_number campus grade year subject)
	egen lep_share = mean(lep), by(tch_number campus grade year subject)
	drop if spec_ed_share > .8
	drop if lep_share > .8

*OPTION TO DROP SOME SHARES AT LOW END TO SEE IF THOSE ARE DRIVING ESTIMATES
*drop if share_students < .1
	
	
*SET BANDWIDTH
local bandwidth 0.15
local step 0.01
local start 0.0
*local start 0.1




save temp_low, replace


  **CALCULATE MEDIANS - STUDENT LEVEL***
  use temp_low, clear
  drop if econdis == .
  keep id year tch_number campus lstanford_sd_*_scale econdis
  gen frp_s = econdis == 1 | econdis == 2 if econdis != .
  
  
  *CALCULATE MEDIANS - TEACHER LEVEL
  collapse (mean) frp lstanford_sd_*_scale, by(tch_num year)
  
  egen math_tmed = median(lstanford_sd_math_scale), by(year)
  egen lang_tmed = median(lstanford_sd_lang_scale), by(year)
  egen soc_tmed = median(lstanford_sd_socialstu_scale), by(year)
  egen sci_tmed = median(lstanford_sd_science_scale), by(year)
  egen frp_tmed = median(frp), by(year)
  
  rename lstanford_sd_math_scale math_tmean
  rename lstanford_sd_lang_scale lang_tmean
  rename lstanford_sd_socialstu_scale soc_tmean
  rename lstanford_sd_science_scale sci_tmean
  rename frp_s frp_tmean

  
 
  sort tch_num year
  save teacher_medians.dta, replace
  
  *MERGE INTO ANALYSIS FILE
  use temp_low, clear
  sort tch_num year
  merge tch_num year using teacher_medians.dta, _merge(_mergestudent) nokeep
  

*GENERATE CAMPUS-YEAR INDICATORS
gen double campus_year = campus*10000 + year
gen double department_year = campus*10000000 + year*100 + grade
gen double teacher_year = teacher_newid*10000 + year


*/
*IDENTIFY LEVEL AT WHICH FIXED-EFFECTS ARE ABSORBED
local absorb = "campus_year"

*KEEP ONLY TEACHERS BELOW MEDIAN MEAN LAGGED ACHIEVEMENT
drop if math_tmean >= math_tmed & course_type == "math"
drop if lang_tmean >= lang_tmed  & course_type == "eng"
drop if soc_tmean >= soc_tmed  & course_type == "soc"
drop if sci_tmean >= sci_tmed  & course_type == "sci"


save temp_low, replace


cap postclose estimates2
postfile estimates2 str10(subject type) double(student_share coef se clusters obs) using teacher_share_estimates_lowachieve.dta, replace

***MATH --> TAKS MATH
foreach point of numlist `start'(`step')1 {
	cap qui areg taks_sd_scale_min_math post_share_students share_students taks_math_2004_y*_g*  _I* _g* enroll* if regular_hs == 1 & share_students >= `point' - `bandwidth' & share_students <= `point' + `bandwidth' & course_type == "math", cluster(campus) absorb(`absorb')
	di `point'
    cap post estimates2 ("math") ("post share")  (`point') (_b[post_share_students]) (_se[post_share_students]) (e(N_clust)) (e(N))
    cap post estimates2 ("math") ("share")  (`point') (_b[share_students]) (_se[share_students]) (e(N_clust)) (e(N))
	}

***MATH --> Stanford MATH
foreach point of numlist `start'(`step')1 {
	cap qui areg stanford_sd_math_scale post_share_students share_students stanf_math_2004_y*_g*  _I* _g* enroll* if regular_hs == 1 & share_students >= `point' - `bandwidth' & share_students <= `point' + `bandwidth' & course_type == "math", cluster(campus) absorb(`absorb')
	di `point'
    cap post estimates2 ("math_stanf") ("post share")  (`point') (_b[post_share_students]) (_se[post_share_students]) (e(N_clust)) (e(N))
    cap post estimates2 ("math_stanf") ("share")  (`point') (_b[share_students]) (_se[share_students]) (e(N_clust)) (e(N))
}

***ENGLISH --> STANFORD LANGUAGE
foreach point of numlist `start'(`step')1 {
	cap qui areg stanford_sd_lang_scale post_share_students share_students stanf_lang_2004_y*_g*  _I* _g*  enroll* if regular_hs == 1 & share_students >= `point' - `bandwidth' & share_students <= `point' + `bandwidth' & course_type == "eng", cluster(campus) absorb(`absorb')
	di `point'
    cap post estimates2 ("eng") ("post share")  (`point') (_b[post_share_students]) (_se[post_share_students]) (e(N_clust)) (e(N))
    cap post estimates2 ("eng") ("share")  (`point') (_b[share_students]) (_se[share_students]) (e(N_clust)) (e(N))
}

***SCI --> POOOLED
foreach point of numlist `start'(`step')1 {
	cap qui areg stanf_taks_sci post_share_students share_students stanf_science_2004_y*_g*    _I* _g*  enroll* if regular_hs == 1 & share_students >= `point' - `bandwidth' & share_students <= `point' + `bandwidth' &  course_type == "sci", cluster(campus) absorb(`absorb')
	di `point'
    cap post estimates2 ("sci-pool") ("post share")  (`point') (_b[post_share_students]) (_se[post_share_students]) (e(N_clust)) (e(N))
    cap post estimates2 ("sci-pool") ("share")  (`point') (_b[share_students]) (_se[share_students]) (e(N_clust)) (e(N))
}

***soc -->Pooled
foreach point of numlist `start'(`step')1 {
	cap qui areg stanf_taks_soc post_share_students share_students stanf_socialstu_2004_y*_g* _I* _g*  _I* _g*  enroll* if regular_hs == 1 & share_students >= `point' - `bandwidth' & share_students <= `point' + `bandwidth' & course_type == "soc", cluster(campus) absorb(`absorb')
	di `point'
    cap post estimates2 ("soc-pooled") ("post share")  (`point') (_b[post_share_students]) (_se[post_share_students]) (e(N_clust)) (e(N))
    cap post estimates2 ("soc-pooled") ("share")  (`point') (_b[share_students]) (_se[share_students]) (e(N_clust)) (e(N))
}

postclose estimates2
	
*/

**GRAPHS**

use teacher_share_estimates_lowachieve, clear
keep if type == "post share"

*CONVERT TO IMPACT OF A 10 PP INCREASE IN SHARE
replace coef = coef/10
replace se = se/10

gen upper = coef + 1.96*se
gen lower = coef - 1.96*se

local bandwidth 0.15



*MATH
# delimit ;
twoway 	(connected coef student_share if student_share <= .5 & subject == "math" , mstyle(none) title("TAKS Math for Math Awards") ytitle("Change in Award Impact from 0.1 Share Increase""Achievement - Standard Deviation Units" ) xtitle("Share of Students in Subject Assigned to Teacher") yline(0)  legend(label(1 "Estimate")) graphregion(color(white))  yscale(range(-.2 .2)) ylabel(-.2(.1).2) ) 
		(connected upper student_share if student_share <= .5 & subject == "math" , mstyle(none) lcolor(black) lpattern(dash) legend(label(2 "95% CI")))
		(connected lower student_share if student_share <= .5 & subject == "math" , mstyle(none)  lcolor(black) lpattern(dash) legend(order(1 2)));
		
graph export math_llr_lowachieve_`absorb'.eps, as(eps) replace;

# delimit cr

*MATH
# delimit ;
twoway 	(connected coef student_share if student_share <= .5 & subject == "math_stanf" , mstyle(none) title("Stanford Math") yline(0)  ytitle("Change in Award Impact from 0.1 Share Increase""Achievement - Standard Deviation Units" ) xtitle("Share of Students in Subject Assigned to Teacher")  legend(label(1 "Estimate")) graphregion(color(white))  yscale(range(-.2 .2)) ylabel(-.2(.1).2))
		(connected upper student_share if student_share <= .5 & subject == "math_stanf" , mstyle(none) lcolor(black) lpattern(dash) legend(label(2 "95% CI")))
		(connected lower student_share if student_share <= .5 & subject == "math_stanf" , mstyle(none)  lcolor(black) lpattern(dash) legend(order(1 2)));

graph export math_stanf_llr_lowachieve_`absorb'.eps, as(eps) replace;

# delimit cr

*ENGLISH
# delimit ;
twoway 	(connected coef student_share if student_share <= .5 & subject == "eng" , mstyle(none) title("Stanford Language for Language Arts Awards") yline(0)  ytitle("Change in Award Impact from 0.1 Share Increase""Achievement - Standard Deviation Units" ) xtitle("Share of Students in Subject Assigned to Teacher")  legend(label(1 "Estimate")) graphregion(color(white))  yscale(range(-.2 .2)) ylabel(-.2(.1).2))
		(connected upper student_share if student_share <= .5  & subject == "eng" , mstyle(none) lcolor(black) lpattern(dash) legend(label(2 "95% CI")))
		(connected lower student_share if student_share <= .5   & subject == "eng" , mstyle(none)  lcolor(black) lpattern(dash) legend(order(1 2)));

graph export eng_llr_lowachieve_`absorb'.eps, as(eps) replace;

# delimit cr

*SCIENCE pooled
# delimit ;
twoway 	(connected coef student_share if student_share <= .5  & subject == "sci-pool" , mstyle(none) title("Stanford Science for 9th, TAKS Science for" "10th/11th Grade Science Awards") yline(0) ytitle("Change in Award Impact from 0.1 Share Increase""Achievement - Standard Deviation Units" ) xtitle("Share of Students in Subject Assigned to Teacher")  legend(label(1 "Estimate")) graphregion(color(white))  yscale(range(-.2 .2)) ylabel(-.2(.1).2))
		(connected upper student_share if student_share <= .5    & subject == "sci-pool" , mstyle(none) lcolor(black) lpattern(dash) legend(label(2 "95% CI")))
		(connected lower student_share if student_share <= .5   & subject == "sci-pool" , mstyle(none)  lcolor(black) lpattern(dash) legend(order(1 2)));

graph export sci_pooled_llr_lowachieve_`absorb'.eps, as(eps) replace;


# delimit cr

*Soc pooled
# delimit ;
twoway 	(connected coef student_share if student_share <= .5  & subject == "soc-pooled" , mstyle(none) title("Stanford Social Studies for 9th, TAKS Social Studies" "for 10th/11th Grade Social Studies Awards") yline(0) ytitle("Change in Award Impact from 0.1 Share Increase""Achievement - Standard Deviation Units" ) xtitle("Share of Students in Subject Assigned to Teacher") legend(label(1 "Estimate")) graphregion(color(white))  yscale(range(-.2 .2)) ylabel(-.2(.1).2))
		(connected upper student_share if student_share <= .5    & subject == "soc-pooled" , mstyle(none) lcolor(black) lpattern(dash) legend(label(2 "95% CI")))
		(connected lower student_share if student_share <= .5   & subject == "soc-pooled" , mstyle(none)  lcolor(black) lpattern(dash) legend(order(1 2)));

graph export soc_pooled_llr_lowachieve_`absorb'.eps, as(eps) replace;


# delimit cr

****MAIN EFFECT SHARE GRAPHS****
use teacher_share_estimates_lowachieve, clear
keep if type == "share"

*CONVERT TO IMPACT OF A 10 PP INCREASE IN SHARE
replace coef = coef/10
replace se = se/10
gen upper = coef + 1.96*se
gen lower = coef - 1.96*se

local bandwidth 0.15

*MATH
# delimit ;
twoway	(connected coef student_share if student_share <= .5 & subject == "math"  & type == "share", mstyle(none)   title("TAKS Math for Math Awards")  ytitle("Change in Award Impact from Additional Teacher""Achievement - Standard Deviation Units" ) xtitle("Share of Students in Subject Assigned to Teacher") yline(0) yscale(range(-.1 .15)) ylabel(-.1(.05).15) legend(label(1 "Estimate")) graphregion(color(white)))
		(connected upper student_share if student_share <= .5 & subject == "math" & type == "share", mstyle(none) lcolor(black) lpattern(dash)  legend(label(2 "95% CI")))
		(connected lower student_share if student_share <= .5 & subject == "math" & type == "share", mstyle(none)  lcolor(black) lpattern(dash)  legend(order(1 2)));
graph export math_llr_main_lowachieve_`absorb'.eps, as(eps) replace;
				

*Math_stanf			
# delimit ;
twoway	(connected coef student_share if student_share <= .5 & subject == "math_stanf"  & type == "share", mstyle(none)   title("Stanford Math")  ytitle("Change in Award Impact from Additional Teacher""Achievement - Standard Deviation Units" ) xtitle("Share of Students in Subject Assigned to Teacher") yline(0)  yscale(range(-.1 .15)) ylabel(-.1(.05).15) legend(label(1 "Estimate")) graphregion(color(white)))
		(connected upper student_share if student_share <= .5 & subject == "math_stanf" & type == "share", mstyle(none) lcolor(black) lpattern(dash)  legend(label(2 "95% CI")))
		(connected lower student_share if student_share <= .5 & subject == "math_stanf" & type == "share", mstyle(none)  lcolor(black) lpattern(dash)  legend(order(1 2)));
graph export math_stanf_main_lowachieve_`absorb'.eps, as(eps) replace;
				
*English			
# delimit ;
twoway	(connected coef student_share if student_share <= .5 & subject == "eng"  & type == "share", mstyle(none)   title("Stanford Language for Language Arts Awards")  ytitle("Change in Award Impact from Additional Teacher""Achievement - Standard Deviation Units" ) xtitle("Share of Students in Subject Assigned to Teacher") yline(0)  yscale(range(-.1 .15)) ylabel(-.1(.05).15) legend(label(1 "Estimate")) graphregion(color(white)))
		(connected upper student_share if student_share <= .5 & subject == "eng" & type == "share", mstyle(none) lcolor(black) lpattern(dash)  legend(label(2 "95% CI")))
		(connected lower student_share if student_share <= .5 & subject == "eng" & type == "share", mstyle(none)  lcolor(black) lpattern(dash)  legend(order(1 2)));
graph export eng_llr_main_lowachieve_`absorb'.eps, as(eps) replace;


*Science			
# delimit ;
twoway	(connected coef student_share if student_share <= .5 & subject == "sci-pool"  & type == "share", mstyle(none)   title("Stanford Science for 9th, TAKS Science for" "10th/11th Grade Science Awards")  ytitle("Change in Award Impact from Additional Teacher""Achievement - Standard Deviation Units" ) xtitle("Share of Students in Subject Assigned to Teacher") yline(0)  yscale(range(-.1 .15)) ylabel(-.1(.05).15) legend(label(1 "Estimate")) graphregion(color(white)))
		(connected upper student_share if student_share <= .5 & subject == "sci-pool" & type == "share", mstyle(none) lcolor(black) lpattern(dash)  legend(label(2 "95% CI")))
		(connected lower student_share if student_share <= .5 & subject == "sci-pool" & type == "share", mstyle(none)  lcolor(black) lpattern(dash)  legend(order(1 2)));
graph export sci_llr_main_lowachieve_`absorb'.eps, as(eps) replace;
			
			
*Social Studies			
# delimit ;
twoway	(connected coef student_share if student_share <= .5 & subject == "soc-pooled"  & type == "share", mstyle(none) title("Stanford Social Studies for 9th, TAKS Social Studies" "for 10th/11th Grade Social Studies Awards")  ytitle("Change in Award Impact from Additional Teacher""Achievement - Standard Deviation Units" " " ) xtitle("Share of Students in Subject Assigned to Teacher") yline(0) yscale(range(-.1 .15)) ylabel(-.1(.05).15) legend(label(1 "Estimate")) graphregion(color(white)))
		(connected upper student_share if student_share <= .5 & subject == "soc-pooled" & type == "share", mstyle(none) lcolor(black) lpattern(dash)  legend(label(2 "95% CI")))
		(connected lower student_share if student_share <= .5 & subject == "soc-pooled" & type == "share", mstyle(none) lcolor(black) lpattern(dash)  legend(order(1 2)));
graph export soc_llr_main_lowachieve_`absorb'.eps, as(eps) replace;
			
# delimit cr

cap log close

/*
***CALCULATE TOTAL PROGRAM EFFECT**
set more off
log using program_effect_low.log, replace

*MATH*
use teacher_share_estimates_lowachieve, clear
keep if type == "post share"
keep if subject == "math"
drop if se == 0
gen upper = coef + 1.96*se
gen lower = coef - 1.96*se

	*INTEGRATE OVER POST*SHARE ESTIMATES
		gen percent = student_share*100
		tsset percent
		
		gen total_effect = 0
		replace total_effect = coef*.01 if percent == 0

		gen total_effect_upper = 0
		replace total_effect_upper = upper*.01 if percent == 0		
		
		gen total_effect_lower = 0
		replace total_effect_lower = lower*.01 if percent == 0		
				

		forvalues percent = 1/100 {
			forvalues lag = 1/`percent' {
				qui replace total_effect = total_effect + 0.01*l`lag'.coef if l`lag'.coef != . & percent == `percent'
				qui replace total_effect_upper = total_effect_upper + 0.01*l`lag'.upper if l`lag'.upper != . & percent == `percent'
				qui replace total_effect_lower = total_effect_lower + 0.01*l`lag'.lower if l`lag'.lower != . & percent == `percent'
				}
		}
		
		foreach var of varlist total_effect_* {
			replace `var' = . if percent == .
		}
		
		
		
sort percent
save teacher_share_estimates_lowachieve_math, replace

*MERGE INTO STUDENT DATA
use temp_low, clear
keep if year >= 2007
keep if course_type == "math"
drop if lstanford_sd_math_scale >= math_smed & course_type == "math"
gen percent = round(share_students*100)
sort percent
cap drop _merge
merge m:1 percent using teacher_share_estimates_lowachieve_math, keepusing(coef upper lower se total_effect*)

*CALCULATE ESTIMATED TOTAL GAIN
		gen student_share = share_student
		gen total_effect_linear = 0
		replace total_effect_linear = 0.521*student_share
		
		gen total_effect_linear_upper = 0
		replace total_effect_linear_upper = (0.521 + 1.96*0.081)*student_share
		
		gen total_effect_linear_lower = 0
		replace total_effect_linear_lower = (0.521 - 1.96*0.081)*student_share		
				
collapse (mean) total_effect* [aw = weight]
di "Math Effect"
list


**ENGLISH
use teacher_share_estimates_lowachieve, clear
keep if type == "post share"
keep if subject == "eng"
drop if se == 0
drop if student_share > .75
gen upper = coef + 1.96*se
gen lower = coef - 1.96*se

	*INTEGRATE OVER POST*SHARE ESTIMATES
		gen percent = student_share*100
		tsset percent
		
		gen total_effect = 0
		replace total_effect = coef*.01 if percent == 0

		gen total_effect_upper = 0
		replace total_effect_upper = upper*.01 if percent == 0		
		
		gen total_effect_lower = 0
		replace total_effect_lower = lower*.01 if percent == 0		
				
		
		forvalues percent = 1/100 {
			forvalues lag = 1/`percent' {
				qui replace total_effect = total_effect + 0.01*l`lag'.coef if l`lag'.coef != . & percent == `percent'
				qui replace total_effect_upper = total_effect_upper + 0.01*l`lag'.upper if l`lag'.upper != . & percent == `percent'
				qui replace total_effect_lower = total_effect_lower + 0.01*l`lag'.lower if l`lag'.lower != . & percent == `percent'
			}
		}
				
sort percent
save teacher_share_estimates_lowachieve_eng, replace

*MERGE INTO STUDENT DATA
use temp_low, clear
keep if year >= 2007
keep if course_type == "eng"
drop if lstanford_sd_lang_scale >= lang_smed & course_type == "eng"
gen percent = round(share_students*100)
sort percent
cap drop _merge
merge m:1 percent using teacher_share_estimates_lowachieve_eng, keepusing(coef upper lower se total_effect*)

*CALCULATE ESTIMATED TOTAL GAIN
		gen student_share = share_student

		gen total_effect_linear = 0
		replace total_effect_linear = 0.241*student_share
		
		gen total_effect_linear_upper = 0
		replace total_effect_linear_upper = (0.241 + 1.96*0.048)*student_share
		
		gen total_effect_linear_lower = 0
		replace total_effect_linear_lower = (0.241 - 1.96*0.048)*student_share		
					
collapse (mean) total_effect* [aw = weight]
di "Eng Effect"
list


**SCIENCE
use teacher_share_estimates_lowachieve, clear
keep if type == "post share"
keep if subject == "sci-pool"
drop if se == 0
gen upper = coef + 1.96*se
gen lower = coef - 1.96*se

	*INTEGRATE OVER POST*SHARE ESTIMATES
		gen percent = student_share*100
		tsset percent
		
		gen total_effect = 0
		replace total_effect = coef*.01 if percent == 0

		gen total_effect_upper = 0
		replace total_effect_upper = upper*.01 if percent == 0		
		
		gen total_effect_lower = 0
		replace total_effect_lower = lower*.01 if percent == 0		
				
		
		forvalues percent = 1/100 {
			forvalues lag = 1/`percent' {
				qui replace total_effect = total_effect + 0.01*l`lag'.coef if l`lag'.coef != . & percent == `percent'
				qui replace total_effect_upper = total_effect_upper + 0.01*l`lag'.upper if l`lag'.upper != . & percent == `percent'
				qui replace total_effect_lower = total_effect_lower + 0.01*l`lag'.lower if l`lag'.lower != . & percent == `percent'
			}
		}
		
		
sort percent
save teacher_share_estimates_lowachieve_sci, replace

*MERGE INTO STUDENT DATA
use temp_low, clear
keep if year >= 2007
keep if course_type == "sci"
drop if lstanford_sd_science_scale >= sci_smed & course_type == "sci"
gen percent = round(share_students*100)
sort percent
cap drop _merge
merge m:1 percent using teacher_share_estimates_lowachieve_sci, keepusing(coef upper lower se total_effect*)

*CALCULATE ESTIMATED TOTAL GAIN
		gen student_share = share_student
		gen total_effect_linear = 0
		replace total_effect_linear = 0.410*student_share
		
		gen total_effect_linear_upper = 0
		replace total_effect_linear_upper = (0.410 + 1.96*0.068)*student_share
		
		gen total_effect_linear_lower = 0
		replace total_effect_linear_lower = (0.410 - 1.96*0.068)*student_share	
		
collapse (mean) total_effect* [aw = weight]
di "Sci Effect"
list




**SOCIAL STUDIES
use teacher_share_estimates_lowachieve, clear
keep if type == "post share"
keep if subject == "soc-pooled"
drop if se == 0
gen upper = coef + 1.96*se
gen lower = coef - 1.96*se

	*INTEGRATE OVER POST*SHARE ESTIMATES
		gen percent = student_share*100
		tsset percent
		
		gen total_effect = 0
		replace total_effect = coef*.01 if percent == 0

		gen total_effect_upper = 0
		replace total_effect_upper = upper*.01 if percent == 0		
		
		gen total_effect_lower = 0
		replace total_effect_lower = lower*.01 if percent == 0		
				
		
		forvalues percent = 1/100 {
			forvalues lag = 1/`percent' {
				qui replace total_effect = total_effect + 0.01*l`lag'.coef if l`lag'.coef != . & percent == `percent'
				qui replace total_effect_upper = total_effect_upper + 0.01*l`lag'.upper if l`lag'.upper != . & percent == `percent'
				qui replace total_effect_lower = total_effect_lower + 0.01*l`lag'.lower if l`lag'.lower != . & percent == `percent'
			}
		}

		
sort percent
save teacher_share_estimates_lowachieve_soc, replace

*MERGE INTO STUDENT DATA
use temp_low, clear
keep if year >= 2007
keep if course_type == "soc"
drop if lstanford_sd_socialstu_scale >= soc_smed & course_type == "soc"
gen percent = round(share_students*100)
sort percent
cap drop _merge
merge m:1 percent using teacher_share_estimates_lowachieve_soc, keepusing(coef upper lower se total_effect*)

*CALCULATE ESTIMATED TOTAL GAIN

		gen student_share = share_student
		gen total_effect_linear = 0
		replace total_effect_linear = 0.625*student_share
		
		gen total_effect_linear_upper = 0
		replace total_effect_linear_upper = (0.625 + 1.96*0.119)*student_share
		
		gen total_effect_linear_lower = 0
		replace total_effect_linear_lower = (0.625 - 1.96*0.119)*student_share		
		
collapse (mean) total_effect* [aw = weight]
di "Soc Effect"
list



**MATH-STANFORD***
use teacher_share_estimates_lowachieve, clear
keep if type == "post share"
keep if subject == "math_stanf"
drop if se == 0
drop if student_share > .64
gen upper = coef + 1.96*se
gen lower = coef - 1.96*se

	*INTEGRATE OVER POST*SHARE ESTIMATES
		gen percent = student_share*100
		tsset percent
		
		gen total_effect = 0
		replace total_effect = coef*.01 if percent == 0

		gen total_effect_upper = 0
		replace total_effect_upper = upper*.01 if percent == 0		
		
		gen total_effect_lower = 0
		replace total_effect_lower = lower*.01 if percent == 0		
				
		
		forvalues percent = 1/100 {
			forvalues lag = 1/`percent' {
				qui replace total_effect = total_effect + 0.01*l`lag'.coef if l`lag'.coef != . & percent == `percent'
				qui replace total_effect_upper = total_effect_upper + 0.01*l`lag'.upper if l`lag'.upper != . & percent == `percent'
				qui replace total_effect_lower = total_effect_lower + 0.01*l`lag'.lower if l`lag'.lower != . & percent == `percent'
			}
		}

			
sort percent
save teacher_share_estimates_lowachieve_math_stanf, replace

*MERGE INTO STUDENT DATA
use temp_low, clear
keep if year >= 2007
keep if course_type == "math"
drop if lstanford_sd_math_scale >= math_smed & course_type == "math"
gen percent = round(share_students*100)
sort percent
cap drop _merge
merge m:1 percent using teacher_share_estimates_lowachieve_math_stanf, keepusing(coef upper lower se total_effect*)

*CALCULATE ESTIMATED TOTAL GAIN
		gen student_share = share_student
		gen total_effect_linear = 0
		replace total_effect_linear = 0.051*student_share
		
		gen total_effect_linear_upper = 0
		replace total_effect_linear_upper = (0.051 + 1.96*0.036)*student_share
		
		gen total_effect_linear_lower = 0
		replace total_effect_linear_lower = (0.051 - 1.96*0.036)*student_share		
		
collapse (mean) total_effect* [aw = weight]
di "Math-Stanf Effect"
list

log close


